package com.demo.java.OD601_650.OD644;

import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【模拟商场优惠打折II(A卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146974873
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        List<Integer> params = Arrays.stream(in.nextLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());
        int m = params.get(0);  // 满减券数量
        int n = params.get(1);  // 打折券数量
        int k = params.get(2);  // 无门槛券数量

        int x = Integer.parseInt(in.nextLine());  // 商品的原价

        while (in.hasNext()) {
            int price = Integer.parseInt(in.nextLine());

            int[][] result = new int[4][2];  // 用于存储每种优惠方式的结果

            // 计算每种优惠方式的最终价格和使用的优惠券数量
            result[0] = mode_a(price, m, n);  // 满减后打折
            result[1] = mode_b(price, m, n);  // 打折后满减
            result[2] = mode_c(price, m, k);  // 满减后无门槛
            result[3] = mode_d(price, n, k);  // 打折后无门槛

            // 按照价格降序，用券数降序排序
            Arrays.sort(result, (int[] a, int[] b) -> {
                if (a[0] != b[0]) {
                    // 第一个数不相等，第一个数降序
                    return a[0] - b[0];
                } else {
                    // 第一个数相等，第二个数降序
                    return a[1] - b[1];
                }
            });

            // 输出最优方案的价格和使用的优惠券数量
            System.out.print(result[0][0]);
            System.out.print(" ");
            System.out.println(result[0][1]);
        }
    }

    // 先满减后打折
    public static int[] mode_a(int price, int m, int n) {
        int count = 0;
        count += Math.min(m, price / 100);  // 使用满减券
        price -= count * 10;  // 满减后价格
        price *= 0.92;  // 打折后价格
        count += 1;  // 使用了打折券
        int a[] = {price, count};
        return a;
    }

    // 先打折后满减
    public static int[] mode_b(int price, int m, int n) {
        int count = 0;

        price *= 0.92;  // 先打折
        count += 1;  // 使用了打折券

        count += Math.min(m, price / 100);  // 使用满减券
        price -= (count - 1) * 10;  // 满减后的价格

        int a[] = {price, count};
        return a;
    }

    // 先满减后无门槛
    public static int[] mode_c(int price, int m, int k) {
        int count = 0;

        count += Math.min(m, price / 100);  // 使用满减券
        price -= count * 10;  // 满减后的价格

        for (int i = 0; i < k; i++) {
            price -= 5;  // 使用无门槛券
            count += 1;
            if (price < 0) {
                break;  // 如果价格低于0，则停止
            }
        }

        int a[] = {price, count};
        return a;
    }

    // 先打折后无门槛
    public static int[] mode_d(int price, int n, int k) {
        int count = 0;

        price *= 0.92;  // 先打折
        count += 1;  // 使用了打折券

        for (int i = 0; i < k; i++) {
            price -= 5;  // 使用无门槛券
            count += 1;
            if (price < 0) {
                break;  // 如果价格低于0，则停止
            }
        }
        int a[] = {price, count};
        return a;
    }
}